package com.xsd.juc;

/**
 * @Description:
 * @Author: zhoufuzong
 * @Created: 2021-01-02 21:21:02
 * @Version: 1.1.0
 */

public class TestTransferValue {
    public void changeValue1(int age){
        age=30;
    }

    public void changeValue2(Person person){
        person.setPersonName("xxx");
    }

    public void changeValue3(String str){
        str ="xxx";
    }

    public static void main(String[] args) {
        TestTransferValue test = new TestTransferValue();

        int age =20;
        test.changeValue1(age);  // 传的复印件,方法内部修改值，不影响本体
        System.out.println("age-----"+age);  //20


        Person person = new Person("abc");   // new Person 在堆上，person 指向堆，传对象，指向是同一个堆内存地址
        test.changeValue2(person);
        System.out.println("peronName---"+person.getPersonName()); // xxx

        String str = "abc";   // abc 在常量池中，方法中，更改了change方法中str的指向，main方法中不变
        String str2 = new String("123");
        test.changeValue3(str2);
        System.out.println("String ----"+str2); //  str ：abc  str2:123
    }
}
